package my.assistant.homecashmanager.inoutitem.domain;

import java.util.List;

import my.assistant.homecashmanager.inoutitem.dao.DmInoutItemDao;
import my.assistant.homecashmanager.inoutitem.data.DmInoutItem;

import org.assistant.common.exception.GetFromDBException;
import org.assistant.common.exception.ImplementNotFoundException;
import org.assistant.common.exception.SaveIntoDBException;
import org.assistant.common.utils.ClassUtils;

public class DmInoutItemDomainImpl implements DmInoutItemDomain {
	private DmInoutItemDao dmInoutItemDao;

	public DmInoutItemDomainImpl() throws ImplementNotFoundException {
		dmInoutItemDao = ClassUtils.getInterfaceImplement(DmInoutItemDao.class);
	}

	/**
	 * 根据ID获取一条收支项目
	 * 
	 * @param id
	 * @return
	 * @throws GetFromDBException
	 */
	public DmInoutItem getDmInoutItemById(long id) throws GetFromDBException {
		return dmInoutItemDao.getDmInoutItemById(id);
	}

	/**
	 * 根据HomeID得到该家庭所拥有的收支项目列表（包括系统级项目）
	 * 
	 * @param homeId
	 * @return
	 * @throws GetFromDBException
	 */
	public List<DmInoutItem> getDmInoutItemByHome(String homeId)
			throws GetFromDBException {
		return dmInoutItemDao.getDmInoutItemByHome(homeId);
	}

	/**
	 * 往数据库中新插入一条收支项目
	 * 
	 * @param item
	 * @return
	 * @throws SaveIntoDBException
	 */
	public void insertDmInoutItem(DmInoutItem item) throws SaveIntoDBException {
		dmInoutItemDao.insertDmInoutItem(item);
	}

	/**
	 * 修改一条收支项目
	 * 
	 * @param item
	 * @throws SaveIntoDBException
	 */
	public void updateDmInoutItem(DmInoutItem item) throws SaveIntoDBException {
		dmInoutItemDao.updateDmInoutItem(item);
	}

	/**
	 * 禁用一条收支项目
	 * 
	 * @param id
	 * @throws SaveIntoDBException
	 */
	public void disableDmInoutItem(long id) throws SaveIntoDBException {
		dmInoutItemDao.disableDmInoutItem(id);
	}
}
